home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / wais / doc / protspec.txt < prev    next >
Text File  |  1995-05-09  |  38KB  |  916 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                        WAIS Interface Protocol
  7.                   Prototype Functional Specification
  8.  
  9.                              Version 1.5
  10.                             April 23, 1990
  11.  
  12.  Franklin Davis, Brewster Kahle, Harry Morris, Jim Salem, Tracy Shen
  13.                     Thinking Machines Corporation
  14.  
  15.                   Rod Wang, John Sui, Mark Grinbaum
  16.                       Dow Jones & Company, Inc.
  17.  
  18.  
  19.  
  20.  
  21.         Contents
  22.  
  23.         1. Overview
  24.                 1.1 Supported Facilities
  25.                 1.2 Unsupported Facilities
  26.                 1.3 Conformance with Version 1 of Z39.50
  27.                 1.4 Errors in the Standard
  28.  
  29.         2. Initialization Facility
  30.                 2.1 Init APDU
  31.                 2.2 Init-Response APDU
  32.  
  33.         3. Search Facility
  34.                 3.1 Search APDU
  35.                 3.2 Search-Response APDU
  36.  
  37.         4. Element-Set-Names supported by DowQuest
  38.                 4.1 Document-Header-Request
  39.                 4.2 Document-Text-Request
  40.                 4.3 Document-Header
  41.                 4.4 Document-Text
  42.                 4.5 Document-Short-Header
  43.                 4.6 Document-Headline
  44.                 4.7 Document-Long-Header
  45.                 4.8 Document-Codes
  46.  
  47.         5. Data Element Definitions
  48.                 5.1 Tag Values of the Data Element
  49.  
  50.         Appendix A. Type-3 Query (Relevance Feedback)
  51.  
  52.         Appendix B. Sample APDUs in WAIS Demonstration System
  53.                 B.1 Init APDU
  54.                 B.2 Init-Response APDU
  55.                 B.3 Search APDU
  56.                 B.4 Search-Response APDU
  57.         Appendix C. DowQuest Code Formats
  58.  
  59. 1. Overview
  60.  
  61. The purpose of this interface is to establish an application level
  62. (ISO 2) protocol for query/retrieval applications.  The initial
  63. implementation will provide a protocol for the DowQuest database
  64. service provided by Dow Jones News Retrieval.  Workstation interfaces
  65. will be implemented on the Macintosh as part of the WAIS project (Wide
  66. Area Information Server).  The intention is to provide a sophisticated
  67. and expandable computer-to-computer interface for future databases.
  68.  
  69. This protocol is based on the Z39.50-1988 ("the standard") Information
  70. Retrieval Service Definitions and Protocol Specification for Library
  71. Applications.  Each section of this document includes references in
  72. square brackets "[]" to the appropriate section(s) in the Z39.50
  73. specification.
  74.  
  75. The standard specifies an Opens Systems Interconnection application
  76. layer service definition and protocol specification for Information
  77. Retrieval.  The Information Retrieval protocol allows an application
  78. on one computer to query the database of another computer.  The
  79. protocol specifies the procedures and structures for the intersystem
  80. submission of a search request (including the syntax of the query),
  81. request for the transmission of database records located by a search,
  82. the responses to the request, access control, and resource control.
  83.  
  84. This is the last version of the WAIS protocol to be based on the
  85. Z39.50 standard.  The next version will implement the newer SR-1
  86. standard, which is based on Z39.50, but is written in ASN.1.
  87.  
  88. The WAIS extensions to the standard are primarily to support
  89. "relevance feedback" queries.  (The standard currently supports a
  90. boolean query syntax.)  The Present facility is not used, in order to
  91. allow the target system to be "stateless" (to always delete Result-
  92. Sets.)  Instead, a Type-1 query is used for text retrieval.  In order
  93. to retrieve document number xxx, a search is performed with a query
  94. specifying that System-Control-Number=xxx.
  95.  
  96. The WAIS extensions also enable the origin to request a range of
  97. document text.  The Type-1 query is used as described in the previous
  98. paragraph with the addition of Chunk-Code parameters.  The portion of
  99. the document that matches the Chunk-Code values will be returned, e.g.
  100. "System-Control-Number=xxx AND Line>1000 AND Line <= 2000" would
  101. return lines 1001 through 2000 of document xxx.
  102.  
  103. This protocol requires the target system to return unique document IDs
  104. in a Search-Response, labeled as System-Control-Number (see Appendix C
  105. of the standard).  These document IDs are used by the origin (user
  106. interface) to specify documents when requesting display of a document
  107. or in relevance feedback searches.
  108.  
  109. Retrieval of large documents dependsw on the ability to specify a
  110. range of a document in a search.  This will be specified with an
  111. extension called "Chunks."  This version of the protocol does not have
  112. a method for the origin and target to negotiate the available chunk
  113. types.  Three chunk types are currently defined for DowQuest: Byte,
  114. Line, and Paragraph.
  115.  
  116. For efficiency reasons it is useful to refer to a document range with
  117. large "chunks" that have been marked in the text by the target system.
  118. The chunk markers and IDs are not displayed to the user, but are used
  119. by the origin when the user selects a range of a document for a
  120. relevance feedback query.  The Init-Response APDU is extended to
  121. provide "chunk" markers and sizes which may be used to specify
  122. document ranges in relevance feedback queries.
  123.  
  124. The User Information part of APDUs is used in more complex ways in
  125. this extension than was originally envisioned in the standard.  In the
  126. standard, the User Information part was a single Element of type
  127. "any."  The WAIS protocol extensions uses User-Information-Field
  128. preceding the set of elements in the user information part of an APDU.
  129. This is the length in bytes of all the following elements, excluding
  130. the User-Information-Length element.
  131.  
  132.  
  133. 1.1 Supported Facilities
  134.  
  135. For the June 1990 target delivery date of the prototype WAIS system,
  136. DowQuest will support only 2 facilities from the Z39.50 specification.
  137.  
  138. The "Initialization Facility" [3.2.1] includes an "Init APDU"
  139. [4.1.1.1, table A2] and an "Init-Response APDU" [4.1.1.2, Table A3].
  140.  
  141. The "Search Facility" [3.2.2] includes a "Search APDU" [4.1.1.3, table
  142. A4] and a "Search-Response APDU" [4.1.1.4, table A5].
  143.  
  144. "APDU" means "Application Protocol Data Unit," which is a unit of data
  145. passed between an origin (user workstation) and target (database
  146. server).  These and other terms are defined in section 2 of the Z39.50
  147. specification.
  148.  
  149. The Search APDU will be extended to have a new query type: Type-3,
  150. "Relevance Feedback Query."
  151.  
  152. The Search-Response APDU will be modified to include new elements in
  153. Database-Records, including Document-IDs (used for relevance feedback)
  154. and other fields, specified in section 4 of this document.
  155.  
  156.  
  157. 1.2 Unsupported Facilities
  158.  
  159. The remaining 5 facilities from Z39.50 are not supported in the WAIS
  160. prototype.
  161.  
  162. The "Retrieval Facility" will not be supported in the Wais prototype.
  163. Document text will be retrieved using a Type-1 query based on
  164. System-Control-Number (document ID).
  165.  
  166. The "Result-Set-Delete Facility" is not needed because DowQuest will
  167. always delete all Result-Sets after returning a Search-Response APDU.
  168.  
  169. The "Access Control Facility" will not be supported.  All users will
  170. have access to all data in DowQuest.
  171.  
  172. The "Accounting/Resource Control Facility" will not be supported.
  173. DowQuest responses have a maximum size.
  174.  
  175. The "Termination Facility" is not needed because DowQuest will not
  176. store any state about user sessions.  Each request and response will
  177. be a complete transaction, independent of all others.  Either the
  178. origin or the target may abort a session at any time.
  179.  
  180.  
  181. 1.3 Conformance with Version 1 of Z39.50
  182.  
  183. 1.3.1 Extensibility
  184.  
  185. As specified in section 4.3 of the standard, WAIS systems will ignore
  186. unknown data elements and options in received Init APDUs.
  187.  
  188. 1.3.2 Static Requirements
  189.  
  190. The DowQuest system will conform to the Static Requirements specified
  191. in section 4.4.1 of the standard, with extensions noted in this
  192. document, except that it will NOT support general boolean Type-1
  193. queries.  The Type-1 query will be used only for retrieval of
  194. documents based on System-Control-Number and Chunks.
  195.  
  196. 1.3.3 Dynamic Requirements
  197.  
  198. WAIS systems will conform to the Dynamic Requirements specified in
  199. section 4.4.2 of the standard.  There are restrictions on the Type-1
  200. Query.
  201.  
  202. 1.3.4 Statement Requirements
  203.  
  204. DowQuest will be capable of acting in the role of target.  It supports
  205. version 1 of the standard.
  206.  
  207. See section 1.2 of this document for unsupported facilities.
  208.  
  209. Result-Sets will always be unilaterally deleted by DowQuest.  It will
  210. not accept Search APDUs specifying named result sets.  Each input and
  211. response message pair is a complete, independent transaction.  Thus,
  212. multiple users may share a single session, although the order of
  213. responses is not guaranteed to be the same order as the requests.  If
  214. multiple users share a connection, the origin must use Reference-IDs
  215. to identify input/response message pairs.
  216.  
  217. DowQuest supports element set names in Search APDUs as specified in
  218. section 4 of this document.
  219.  
  220. The maximum number of database names that may be specified in a Search
  221. APDU will be determined by the implementors.
  222.  
  223.  
  224. 1.4 Errors in the Standard
  225.  
  226. Table A7 on p. 43 of the standard is a copy of table A6.  Table A7
  227. should contain the fields defined in 4.1.1.6, p.  23.  Earlier
  228. versions of the WAIS protocol specification contained the same error
  229. in table B.6.
  230.  
  231. 2. Initialization Facility
  232.  
  233. DowQuest will accept an Init APDU at any time, and will always respond
  234. with an Init-Response APDU.  Since DowQuest is stateless, the
  235. Initialization facility is not required to begin a user session, but
  236. it may be used anytime to get the system parameters.
  237.  
  238. The Init-Response APDU may specify "chunk" parameters that may be used
  239. to specify a range of a document in a relevance feedback Type-3 Query.
  240. [??? The chunk negotiation needs to be defined more completely.]
  241.  
  242. The Init-Response APDU may also specify newline characters,
  243. non-displayable field markers, and highlight/non-highlight markers,
  244. and fields describing how often the target is updated and when the
  245. target is updated.
  246.  
  247.  
  248. 2.1 Init APDU
  249.  
  250. The Init APDU requests information about the database service [3.2.1,
  251. 4.1.1.1, and Table A2].  Since DowQuest is stateless, Init is not
  252. required to begin a user session.
  253.  
  254. The Options field must always have 0="will not use" for the Delete
  255. facility.
  256.  
  257. See Appendix B.1 of this document for an example Init APDU.
  258.  
  259.  
  260. 2.2 Init-Response APDU
  261.  
  262. The Init-Response APDU provides information about the database service
  263. [3.2.1, 4.1.1.2, and Table A3].
  264.  
  265. The Options field will always have 0="will not support" for the
  266. access-control and resource-control facilities.
  267.  
  268. Implementation-Name will be "DowQuest", and the Implementation-Version
  269. will be set by the implementors, to be updated as new versions are
  270. released.
  271.  
  272. Preferred-Message-Size and Maximum-Record-Size will be determined
  273. during the implementation.
  274.  
  275. See Appendix B.2 of this document for an example Init-Response APDU.
  276.  
  277.  
  278. 2.2.1 Chunk IDs
  279.  
  280. The User-Information-Field of the Init-Response APDU will contain
  281. four elements indicating ways the origin may specify a region of a
  282. document to be used in a relevance feedback Type-3 query.  The region
  283. is composed of a range of "chunks" such as bytes or paragraphs.  The
  284. elements are:
  285.  
  286.         Search-Chunk-Code-Bitmap  O       bitmap
  287.         Present-Chunk-Code-Bitmap [???] O bitmap
  288.         Chunk-ID-Length           C       integer
  289.         Chunk-Marker              C       ASCII
  290.  
  291. Search-Chunk-Code-Bitmap specifies the chunk codes the target will
  292. accept in Type-1 Queries in Search APDUS requesting display of
  293. document regions.  The bitmap indicates with a "1" in a bit position
  294. that the corresponding code number will be accepted by the target
  295. system.  For example, to indicate that the target accepts accepts
  296. Chunk-Codes 1 and 3 in a Search APDU it would return
  297. Search-Chunk-Code-Bitmap with bits 1 and three set to 1 and all other
  298. bits 0.
  299.  
  300. Initially, four Chunk-Codes are defined.  The default is 1 "Byte" (see
  301. section 5 of this document):
  302.  
  303.         Chunk-Code=0 "Document"
  304.         Chunk-Code=1 "Byte"
  305.         Chunk-Code=2 "Line"
  306.         Chunk-Code=3 "Paragraph"
  307.  
  308. (In the future this may be extended to include other measures, such as
  309. Word, Page, or Chapter-ID.  Other media such as audio might use chunks
  310. such as Song-ID or Seconds.  Video might use Frame or Scene-ID.)
  311.  
  312. Chunk-Code=1 "Byte" is the most general case.  With this chunk size,
  313. Chunk-Marker and Chunk-ID-Length are not used.  The origin may
  314. indicate ranges of a document in bytes by setting Chunk-Code=1 and
  315. providing pairs of byte-offsets in a relevance feedback Type-3 query.
  316. If any Chunk-Code > 1 is accepted, the target must also provide
  317. Chunk-ID-Length and Chunk-Marker.
  318.  
  319. DowQuest will provide Chunk-Code=3 (Paragraph-ID) for relevance
  320. feedback Type-3 Queries, and Chunk-Code=2 (Line) for text retrieval
  321. Type-1 Queries.
  322.  
  323. [??? Need more general chunk mechanism for both tagged and counted
  324. types, e.g. paragraphs are tagged, but lines are counted (each line is
  325. "tagged" only by the presence of a newline).  This will be addressed
  326. in the next version of the protocol.]
  327.  
  328.  
  329. 2.2.2 Other Markers
  330.  
  331. DowQuest will also provide elements in the User-Information field of
  332. the Init-Response APDU indicating various non-displayable marker
  333. fields.  These include:
  334.  
  335.         Highlight-Marker        O       ASCII
  336.         De-Highlight-Marker     C       ASCII
  337.         Newline-Characters      O       ASCII
  338.  
  339. If Highlight-Marker is present, De-Highlight-Marker is required.
  340.  
  341.  
  342. 2.2.3 Other Information Elements
  343.  
  344. WAIS targets may provide elements describing how often and when the
  345. database is updated:
  346.  
  347.         Update-Frequency        O       [???]
  348.         Update-Times            O       [???]
  349.         [??? pricing info?]     O       [???]
  350.  
  351. [The format and tags of these fields is TBD.]
  352.  
  353. 3. Search Facility
  354.  
  355. 3.1 Search APDU
  356.  
  357. The Search APDU will be implemented as defined in the standard [3.2.2,
  358. 4.1.1.3, and Table A4].  However, the Result-Set will always be
  359. deleted by DowQuest immediately after returning a Search-Response
  360. APDU, so the Replace-Indicator field in the Search APDU should be
  361. "on," an and Result-Set-Names is not used.  Search APDUs may not refer
  362. to a Result-Set.  This enables DowQuest to be stateless.
  363.  
  364. The Type-3 Relevance Feedback Query syntax is outside the scope of the
  365. standard.  The syntax used by DowQuest is given in Appendix A.
  366.  
  367. DowQuest will support the Type-1 Query syntax, but not for general
  368. boolean queries.  Only searches specifying System-Control-Number (and
  369. possibly Chunk ranges) are supported.
  370.  
  371. See Appendix B.3 of this document for an example Search APDU.
  372.  
  373.  
  374. 3.2 Search-Response APDU
  375.  
  376. The Search-Response APDU is almost the same as specified in the
  377. standard [3.2.2, 4.1.1.4, and table A5], with a new type of
  378. Database/Diagnostic-Record.  The elements used in Database-Records
  379. [3.2.2.1.5, A.1.3.1] are specified in section 4 of this document.
  380.  
  381. The Result-Set will always be deleted by the DowQuest immediately
  382. after sending a Search-Response APDU.
  383.  
  384. The default element set returned in each Database-Record by DowQuest
  385. in a Search-Response APDU is "Document-Header," defined in section 5
  386. of this document.
  387.  
  388. For records that are beyond the Medium-Set-Present-Number in the
  389. Search APDU, DowQuest will return the "Document-Short-Header" element
  390. set.  This will probably not happen in normal circumstances since
  391. DowQuest returns a maximum of 16 documents.  The origin can request
  392. the Date/Score/Headline/etc. elements by requesting a Document-
  393. Headline element set in subsequent Search APDUs.  [??? Perhaps we
  394. should use message-length or buffer sizes to control this, instead?]
  395.  
  396. See Appendix B.4 for an example Search-Response APDU.
  397.  
  398. 4. Element Sets supported by DowQuest
  399.  
  400. The elements supported by a particular target are outside the Z39.50
  401. standard [3.2.2.1.3].  DowQuest will support the following
  402. Element-Set-Names.  These are used in Search and Search-Response
  403. APDUs.  Element-Set-Names is an optional field in Search APDUs [Table
  404. 2, Table 3].
  405.  
  406. Elements marked with a "*" can only appear in a Search-Response APDU,
  407. since the information is deleted with the Result-Set, so is no longer
  408. available when requesting text, i.e. the text headline and code
  409. elements should only be used with Type-1 queries.
  410.  
  411. The second column notes whether an element is Required, Optional, or
  412. Conditional in a given APDU.
  413.  
  414. The elements and their tag values are defined in section 5 of this
  415. document.
  416.  
  417. 4.3 Document-Header
  418.  
  419. A Search-Response APDU contains one variable element:
  420.  
  421.         Seed-Words-Used         O       ASCII
  422.  
  423. The rest of this element set is returned by default for each
  424. Database-Record in a Search-Response APDU:
  425.  
  426.         System-Control-Number   R       ANY
  427.         Version-Number          O       integer
  428.         Score *                 O       integer
  429.         Best-Match *            O       integer
  430. [???]   Lines                   O       integer
  431.         Document-Length         O       integer
  432.         Source                  O       ASCII
  433.         Date                    O       ASCII
  434.         Title                   C       ASCII
  435.         Geographic-Name         O       ASCII
  436.  
  437.  
  438. 4.4 Document-Text
  439.  
  440. This element set may be returned for each Database-Record in a
  441. Search-Response APDU in response to a Type-1 query:
  442.  
  443.         Document-ID             R       ANY
  444.         Version-Number          O       integer
  445.         Document-Text           R       ASCII
  446.  
  447.  
  448. 4.5 Document-Short-Header
  449.  
  450. This element set is returned in the Database-Record in a
  451. Search-Response APDU for documents that are beyond the
  452. Medium-Set-Present-Number:
  453.  
  454.         Document-ID             R       ANY
  455.         Version-Number          O       integer
  456.         Score *                 O       integer
  457.         Best-Match *            O       integer
  458.         Document-Length         R       integer
  459.  
  460.  
  461. 4.6 Document-Headline
  462.  
  463. This element set is returned in a Search-Response APDU when requested
  464. in a Type-1 Query in a Search APDU for documents that were previously
  465. returned with Document-Short-Header element sets because of size
  466. restrictions:
  467.  
  468.         Document-ID             R       ANY
  469.         Version-Number          O       integer
  470.         Source                  O       ASCII
  471.         Date                    O       ASCII
  472.         Headline                R       ASCII
  473.         Origin                  O       ASCII
  474.  
  475.  
  476. 4.7 Document-Long-Header
  477.  
  478. This element set may be optionally requested in a Search APDU to be
  479. returned in a Search-Response APDU:
  480.  
  481.         Document-ID             R       ANY
  482.         Version-Number          O       integer
  483.         Score *                 O       integer
  484.         Best-Match *            O       integer
  485.         Document-Length         R       integer
  486.         Source                  O       ASCII
  487.         Date                    O       ASCII
  488.         Headline                R       ASCII
  489.         Origin                  O       ASCII
  490.         Stock-Codes             O       ASCII
  491.         Company-Codes           O       ASCII
  492.         Industry-Codes          O       ASCII
  493.         [??? what about more general codes, e.g. author, pricing,
  494.         copyright?] 
  495.  
  496.  
  497. 4.8 Document-Codes
  498.  
  499. This element set is returned in a Search-Response APDU when requested
  500. in a Search APDU:
  501.  
  502.         Document-ID             R       ANY
  503.         Version-Number          O       integer
  504.         Stock-Codes             O       ASCII
  505.         Company-Codes           O       ASCII
  506.         Industry-Codes          O       ASCII
  507.  
  508. 6. Data Element Definitions
  509.  
  510. Begin-Date-Range is the latest date for finding documents in a query
  511. where Date-Factor is DF_LATER or DF_SPECIFIED_RANGE.  Dates are ASCII,
  512. of the form yyyymmdd.
  513.  
  514. Best-Match is the approximate byte offset within a document of the
  515. highest-scoring portion of the document.
  516.  
  517. Chunk-Code specifies the size of chunks used in document regions.  The
  518. default value is 1.  In DowQUest two Chunk-Codes are supported:
  519. DowQuest will provide Chunk-Code=3 (Paragraph-ID) for relevance
  520. feedback Type-3 Queries in a Search APDU, and Chunk-Code=2 (Line) for
  521. text retrieval Type-1 Queries in a Search APDU.  Chunk-Code=1 (Byte)
  522. is the most general case.  With this chunk size, Chunk-Marker and
  523. Chunk-ID-Length are not used.  The origin may indicate ranges of a
  524. document in bytes by setting Chunk-Code=1 and providing pairs of
  525. byte-offsets in a relevance feedback Type-3 query.  Otherwise, the
  526. origin indicates chunk ranges by specifying Chunk-Start-ID and
  527. Chunk-End-ID.
  528.  
  529. Chunk-End-ID -- see Chunk-Start-ID.
  530.  
  531. Chunk-ID-Length specifies how many bytes Chunk-IDs will be.  In
  532. DowQuest Chunk-ID-Length for paragraphs is 3 bytes.  The contents of a
  533. Chunk-ID is opaque to the origin system.  The value is used unchanged
  534. when specifying a chunk range in a relevance feedback Type-3 query.
  535.  
  536. Chunk-Marker specifies an ASCII byte sequence that will occur in the
  537. document text as a delimiter for the start of a chunk (except
  538. Chunk-Code=1 (Byte) which has no markers).  In DowQuest Chunk-IDs for
  539. paragraphs are preceded by "<ESC>l" which is a two-byte Chunk-Marker.
  540.  
  541. Chunk-Start-ID and Chunk-End-ID are either Chunk-IDs (type ANY) that
  542. were each marked with a Chunk-Marker in the text of a document
  543. returned in a Search-Response APDU; or, if Chunk-Code=1, they are
  544. integers containing byte offsets in the text of the document.  They
  545. delimit the beginning and end of a user-selected relevant region of
  546. the document to be used for a relevance feedback query.
  547.  
  548. Company-Codes contains ASCII codes describing companies that are
  549. mentioned in a document.
  550.  
  551. Date is the ascii date a document was published (yyyymmdd).
  552.  
  553. Date-Factor is one of: 1 "DF_INDEPENDENT", 2 "DF_LATER", 3
  554. "DF_EARLIER", or 4 "DF_SPECIFIED_RANGE".  The default is
  555. Date-Factor=1, which specifies no special weighting of dates.  The
  556. other 3 values specify bonus scoring for documents with dates greater,
  557. less than, or between specified dates, respectively.  Date-Factor=2
  558. uses Begin-Date-Range, Date-Factor=3 uses End-Date-Range, and
  559. Date-Factor=4 uses both.
  560.  
  561. De-Highlight-Marker -- see Highlight-Marker.
  562.  
  563. Document-ID is a field that was previously returned in a
  564. Search-Response APDU.  It is unique in the database being searched.
  565. It must be used in a Search APDU exactly as it was returned in a
  566. Search-Response APDU.  See Document-ID-Chunk.
  567.  
  568. Document-ID-Chunk is the same as a Document-ID element, except that it
  569. must be followed by two or three chunk elements defining a fragment of
  570. the document: Chunk-Code, Chunk-Start-ID, Chunk-End-ID.  Chunk-Code is
  571. optional; if Chunk-Code is missing, the previous value of Chunk-Code
  572. in the current APDU is used; or if Chunk-Code never appeared in this
  573. APDU, the default value is Chunk-Code=1 (Byte).
  574.  
  575. Document-Length is the length of the entire document in bytes.
  576.  
  577. Document-Text is a portion of a document text.
  578.  
  579. End-Date-Range is the earliest date for finding documents in a query
  580. where Date-Factor is DF_EARLIER or DF_SPECIFIED_RANGE.  Dates are ASCII,
  581. of the form yyyymmdd.
  582.  
  583. Headline is a short ASCII description of the document for presentation
  584. to the user.  In DowQuest it is a maximum of 160 bytes [??? is this a
  585. requirement?].
  586.  
  587. Highlight-Marker and De-Highlight-Marker are character sequences that
  588. precede and follow text that may be displayed with highlighting.  In
  589. DowQuest, every searchable term is preceded by "<DC1>" (0x11) and
  590. followed by "<DC3>" (0x13).
  591.  
  592. Industry-Codes contains ASCII codes describing industries that are
  593. mentioned in a document.
  594.  
  595. Max-Documents-Retrieved is the maximum number of documents requested
  596. by the origin in a Search APDU to be returned in a Search-Response
  597. APDU.  In DowQuest the default value is 16 [??? probably should not
  598. have a default value?].  The target may return less than
  599. Max-Documents-Retrieved documents.
  600.  
  601. Newline-Characters indicates what characters are used at the end of
  602. lines.  In DowQuest this is "<CR>" (0x0D).
  603.  
  604. Origin-City is an ASCII name of the city and/or country where a
  605. document originated.
  606.  
  607. Present-Chunk-Code-Bitmap is a bitmap indicating what Chunk-Codes may
  608. be used in a Present APDU to specify a text range of a document to be
  609. returned.  See Search-Chunk-Code-Bitmap for its definition.  [??? This
  610. is obsolete.  Chunk-Codes must be worked out more completely.]
  611.  
  612. Score is a measure of how well the document matched the query.  It may
  613. be any integer value.  [??? We may need to define a valid score range
  614. to be used by all targets, or add a field in the Init-Response APDU to
  615. specify the range for the current target.]
  616.  
  617. Search-Chunk-Code-Bitmap is a bitmap indicating what Chunk-Codes may
  618. be used in a Search APDU query to specify a range of a document.  The
  619. bitmap indicates with a "1" in a bit position that the corresponding
  620. code number will be accepted by the target system.  For example, to
  621. indicate that the target accepts accepts Chunk-Codes 1 and 3 in a
  622. Search APDU it would return Search-Chunk-Code-Bitmap with bits 1 and
  623. three set to 1 and all other bits 0.
  624.  
  625. Seed-Words is a text string containing the initial seed words in a
  626. relevance feedback Type-3 query.
  627.  
  628. Seed-Words-Used is the same format as Seed-Words except it contains
  629. only words that actually matched some documents in the database.  This
  630. allows the user interface to give the user feedback about which seed
  631. words were effective in a query.
  632.  
  633. Source is an ASCII string identifying the original source of a
  634. document (e.g. newspaper name, journal title, etc.)
  635.  
  636. Stock-Codes contains ASCII stock ticker codes for companies that are
  637. mentioned in a document.
  638.  
  639. Text-List is a list of text strings that are provided by the user.
  640. They are document fragments that come from outside the DowQuest
  641. database which the user wants to use in a search.  They are processed
  642. in the same manner as seed words except they are not given seed word
  643. weight bonuses.  **This would be a new feature of a query within
  644. DowQuest, and would require changes to the Query Server as well as the
  645. User Server portion of DowQuest.  It will not be implemented for the
  646. June '90 prototype.
  647.  
  648. User-Information-Length is the length of the entire user information
  649. part of an APDU when it consists of more than one element.
  650. User-Information-Length does not include itself in the length.
  651.  
  652. Version-Number is used to validate a local copy of a document's text.
  653. If a document is modified in the target server, its Version-Number
  654. must be incremented.  If a document may not be cached, Version-Number
  655. is set to 0.  The default value is 0.
  656.  
  657. 5.1 Tag Values of the Data Element
  658.  
  659. This table is an extension to the table 19 in section 4.1.3 of the
  660. standard.
  661.  
  662. Element                 Tag     PDU                     R/O/C
  663. _____________________________________________________________
  664.  
  665. User-Information-Length[???] 99 Init-Response           C
  666.                                 Search                  C
  667.                                 Search-Response         C
  668. Chunk-Code              100     Search                  O
  669. Chunk-ID-Length         101     Init-Response           C
  670. Chunk-Marker            102     Init-Response           C
  671. Highlight-Marker        103     Init-Response           O
  672. De-Highlight-Marker     104     Init-Response           C
  673. Newline-Characters      105     Init-Response           O
  674. Seed-Words              106     Search                  C
  675. Document-ID-Chunk       107     Search                  O
  676. Chunk-Start-ID          108     Search                  O
  677. Chunk-End-ID            109     Search                  C
  678. Text-List               110     Search                  O
  679. Date-Factor             111     Search                  O
  680. Begin-Date-Range        112     Search                  O
  681. End-Date-Range          113     Search                  C
  682. Max-Documents-Retrieved 114     Search                  R
  683. Seed-Words-Used         115     Search-Response         O
  684. Document-ID             116     Search                  O
  685.                                 Search-Response         R
  686. Version-Number          117     Search-Response         O
  687. Score                   118     Search-Response         O
  688. Best-Match              119     Search-Response         O
  689. Document-Length         120     Search-Response         R
  690. Source                  121     Search-Response         O
  691. Date                    122     Search-Response         O
  692. Headline                123     Search-Response         C
  693. Origin-City             124     Search-Response         O
  694. Search-Chunk-Code-Bitmap  125   Search                  O
  695. Present-Chunk-Code-Bitmap [???] 126 Search              O
  696. Document-Text           127     Search-Response         R
  697. Stock-Codes             128     Search-Response         O
  698. Company-Codes           129     Search-Response         O
  699. Industry-Codes          130     Search-Response         O
  700.  
  701. Appendix A. Type-3 Query (Relevance Feedback)
  702.  
  703. Query syntax is not part of the Z39.50 specification, but a Type-1
  704. query is suggested in Appendix B of the standard for Boolean queries.
  705. This is a similar suggestion for relevance feedback queries.
  706.  
  707. The Type-3 Query supports the relevance feedback style of database
  708. query (as provided by DowQuest).  The Type-3 query includes the
  709. following elements:
  710.  
  711.         Seed-Words              R       ASCII
  712.  
  713.         Document-ID             O       ANY     (see Note 1 below)
  714.         Document-ID-Chunk       O       ANY     (see Note 2 below)
  715.           Chunk-Code            O       binary
  716.           Chunk-Start-ID        C       if Chunk-Code=1, binary
  717.                                         else ANY
  718.           Chunk-End-ID          C       if Chunk-Code=1, binary
  719.                                         else ANY
  720.  
  721.         (may repeat Document-ID and Document-ID-Chunk elements)
  722.  
  723.         Text-List               O       ASCII   (Not in DowQuest)
  724.         Date-Factor             O       integer
  725.         Begin-Date-Range        C       ASCII
  726.         End-Date-Range          C       ASCII
  727.         Max-Documents-Retrieved R       integer
  728.  
  729. Note 1: There may be any number of Document-ID and Document-ID-Chunk
  730. elements in a Type-3 Query, intermixed.
  731.  
  732. Note 2: Each occurrence of a Document-ID-Chunk element must be
  733. followed by two or three chunk elements, defining a fragment of the
  734. document.
  735.  
  736. Appendix B. Sample APDUs in WAIS Demonstration System
  737.  
  738. In the following, binary values are shown in hexadecimal preceded by
  739. 0x.  Variable fields include a tag and length [see A.1.2.1, A.1.2.2,
  740. and Table 19].  See section 5.1 of this document for tag values for
  741. WAIS elements.
  742.  
  743.  
  744. B.1 Init APDU
  745.  
  746. [see Table 7, Table A2]
  747.  
  748. ITEM                            BYTE POS.       VALUE           NOTE
  749. ______________________________________________________________________
  750. Header-Length-Indicator         1-2             0x0015          21
  751. Header:
  752.   Fixed portion:
  753.     PDU-Type                    3               0x14            20
  754.   Variable Portion:
  755.     Protocol-Version            4-6             0x030101        1
  756.     Options                     7-9             0x0401C0        bit 1,2
  757.     Preferred-Message-Size      10-13           0x05020400      1024
  758.     Maximum-Record-Size         14-17           0x06020800      2048
  759.     Reference-ID                18-23           0x020400000001  1
  760. User information part:
  761.     (none)
  762.  
  763.  
  764. B.2 Init-Response APDU
  765.  
  766. [see Table 8, Table A3]
  767.  
  768. ITEM                            BYTE POSITION.  VALUE           NOTE
  769. ______________________________________________________________________
  770. Header-Length-Indicator         1-2             0x0025          37
  771. Header:
  772.   Fixed portion:
  773.     PDU-Type                    3               0x15            21
  774.     Result                      4               0x01            1="accept"
  775.   Variable Portion:
  776.     Protocol-Version            5-7             0x030101        1
  777.     Options                     8-10            0x0401C0        bit 1,2
  778.     Preferred-Message-Size      11-14           0x05020400      1024
  779.     Maximum-Record-Size         15-18           0x06020400      1024
  780.     Implementation-Name         19-28           0x0908"DowQuest"
  781.     Implementation-Version      29-33           0x1003"1.0"
  782.     Reference-ID                34-39           0x020400000001  1
  783. User-Information-Field          40-42           0x??0217        ??
  784.     Search-Chunk-Code-Bitmap    43-45           0x7D0140        bit 2
  785.     Present-Chunk-Code-Bitmap?? 46-48           0x7E0180        bit 1
  786.     Chunk-Id-Length             49-51           0x650103        3
  787.     Chunk-Marker                52-55           0x66021B6C      "<ESC>l"
  788.     Highlight-Marker            56-58           0x670111        "<DC1>"
  789.     De-Highlight-Marker         59-61           0x680112        "<DC2>"
  790.     Newline-Characters          62-65           0x69020D0A      "<CR><LF>"
  791.  
  792.  
  793. B.3 Search APDU
  794.  
  795. [see Table 9, Table A4]
  796.  
  797. B.3.1 Example query containing only Seed-Words element (no
  798.       Document-ID):
  799.  
  800. ITEM                            BYTE POSITION.  VALUE           NOTE
  801. ______________________________________________________________________
  802. Header-Length-Indicator         1-2             0x0018          24
  803. Header:
  804.   Fixed portion:
  805.     PDU-Type                    3               0x16            22
  806.     Small-Set-Upper-Bound       4-6             0x000400        1024
  807.     Large-Set-Lower-Bound       7-9             0x000800        2048
  808.     Medium-Set-Present-Number   10-12           0x000800        2048
  809.     Replace-Indicator           13              0x01            1="on"
  810.   Variable Portion:
  811.     Result-Set-Name             14-15           0x1100          ""
  812.     Database-Names              16-17           0x1200          ""
  813.     Query-Type                  18-20           0x130133        "3"
  814.     Reference-ID                21-26           0x020400000002  2
  815. User-Information-Field          27-29           0x??0224        36
  816.   Type-3 Query:
  817.     Seed-Words                  30-62           0x6A1F"Tell me about
  818.                                                 Thinking Machines"
  819.       Max-Documents-Retrieved   63-65           0x720110        16
  820. [??? remove this field; use Small-Set-Upper-Bound or something...]
  821.  
  822.  
  823. B.3.2 Example query containing Seed-Words, one Document-ID and
  824.       one Document-ID-Chunk element.  This query includes seed word
  825.       "Apple," and specifies using all of document 00000001WJ in the
  826.       search, and paragraphs with IDS 005 through 007 from document
  827.       00000023WJ:
  828.  
  829. ITEM                            BYTE POSITION.  VALUE           NOTE
  830. ______________________________________________________________________
  831. Header-Length-Indicator         1-2             0x0018          24
  832. Header:
  833.   Fixed portion:
  834.     PDU-Type                    3               0x16            22
  835.     Small-Set-Upper-Bound       4-6             0x000400        1024
  836.     Large-Set-Lower-Bound       7-9             0x000800        2048
  837.     Medium-Set-Present-Number   10-12           0x000800        2048
  838.     Replace-Indicator           13              0x01            1="on"
  839.   Variable Portion:
  840.     Result-Set-Name             14-15           0x1100          ""
  841.     Database-Names              16-17           0x1200          ""
  842.     Query-Type                  18-20           0x130133        "3"
  843.     Reference-ID                21-26           0x020400000003  3
  844. User-Information-Field          27-29           0x??0230        48
  845.   Type-3 Query:
  846.     Seed-Words                  30-36           0x6A05"Apple"
  847.     Max-Documents-Retrieved     37-39           0x720110        16
  848. [??? remove this field; use Small-Set-Upper-Bound or something...]
  849.     Document-ID                 40-51           0x740A00000001WJ
  850.     Document-ID-Chunk           52-63           0x740A00000023WJ
  851.     Chunk-Code                  64-66           0x640102        paragraph
  852.     Chunk-Start-ID              68-72           0x6C03"005"     par ID=005
  853.     Chunk-End-ID                73-77           0x6D03"007"     par ID=007
  854.  
  855.  
  856. B.4 Search-Response APDU
  857.  
  858. [see Table 10, Table A5]
  859.  
  860. ITEM                            BYTE POSITION.  VALUE           NOTE
  861. ______________________________________________________________________
  862. Header-Length-Indicator         1-2             0x0014          20
  863. Header:
  864.   Fixed portion:
  865.     PDU-Type                    3               0x17            23
  866.     Search-Status               4               0x00            0="success"
  867.     Result-Count                5-7             0x000002        2
  868.     Number-of-Records-Returned  8-10            0x000002        2
  869.     Next-Result-Set-Position    11-13           0x000000        0
  870.   Variable Portion:
  871.     Present-Status              14-16           0x1B0100        0="success"
  872.     Reference-ID                17-22           0x020400000002  2
  873. User-Information-Field          23-25           0x??01DD        221
  874.     Seed-Words-Used             26-44           0x7311"Thinking Machines"
  875.   Database records:
  876.     Document-Header element set:
  877.       Document-ID               45-58           0x740C"0000000001WJ"
  878.       Version-Number            59-61           0x750100        0
  879.       Score                     62-67           0x760400000022  34
  880.       Best-Match                68-77           0x77080000000000000001
  881.       Document-Length           78-87           0x78080000000000000033
  882.       Source                    88-92           0x7903"WSJ"
  883.       Date                      93-100          0x7A06"900601"  yymmdd *
  884.       Headline                  101-109         0x7B11"TMC Releases WAIS"
  885.       Origin-City               110-124         0x7C0D"Cambridge, MA"
  886.  
  887.       Document-ID               125-138         0x740C"0000000123ZF"
  888.       Version-Number            139-141         0x750100        0
  889.       Score                     142-147         0x760400000015  21
  890.       Best-Match                148-157         0x7708000000000000006E
  891.       Document-Length           158-167         0x78080000000000000121
  892.       Source                    168-182         0x790D"Business Week"
  893.       Date                      183-190         0x7A06"900603"
  894.       Headline                  191-211         0x7B13"Apple Releases WAIS"
  895.       Origin-City               212-226         0x7C0D"Cupertino, CA"
  896.  
  897. (*) A Date element should actually be yyyymmdd
  898.  
  899.  
  900. Appendix C. DowQuest Code Formats
  901.  
  902.  
  903. C.1 Company Codes
  904.  
  905. [??? TBD]
  906.  
  907.  
  908. C.2 Industry Codes
  909.  
  910. [??? TBD]
  911.  
  912.  
  913. C.3 Stock Codes
  914.  
  915. [??? TBD]
  916.